package com.camemax.utils;
/*
 * 布隆过滤器 ： +-----+-----+-----+-----+...
 *             |1 bit|1 bit|1 bit|1 bit|...
 *             |0 / 1|0 / 1|0 / 1|0 / 1|...
 *             +-----+-----+-----+-----+...
 *   使用位图+哈希存储数据，本质是将数据hash后存储在指定位置上，通过1/0表示是否存在数据。
 *   => 布隆过滤器的唯一弱点： 哈希碰撞
 *   => 所以通过哈希算法降低哈希碰撞概率是唯一核心要素 （eg. Google-MurmurHash）
 * */
public class SimpleBloomFilter {
    private Integer capacity; // 自定义位图大小
    public SimpleBloomFilter(Integer capacity){
        this.capacity = capacity;
    }

    /**
     *
     * @param value input data for Hashing
     * @param seed set the hashing factor
     * @return Hashed Data
     */
    public Long hashCode(String value, Integer seed){
        long result = 0L;
        for ( int i = 0 ; i < value.length() ; i ++ ){
             result = result * seed + value.charAt(i);
        }
        return result & (capacity - 1);
    }
}
